Skip to content

OAuth, OAuth server vs. OAuth client - #3115

Open
aishwaripahwa12 wants to merge 1 commit into
mainfrom
oauth-server-oauth-client-difference
Open

OAuth, OAuth server vs. OAuth client#3115
aishwaripahwa12 wants to merge 1 commit into
mainfrom
oauth-server-oauth-client-difference

Conversation

@aishwaripahwa12

Copy link
Copy Markdown
Contributor

SEO blogs

@appwrite

appwrite Bot commented Jul 21, 2026

Copy link
Copy Markdown

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Ready Ready View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Processing Processing View Logs Preview URL QR Code


Tip

Each function runs in its own isolated container with custom environment variables

@greptile-apps

greptile-apps Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds two unlisted OAuth blog posts and their assets.

  • New OAuth server versus OAuth client article.
  • New beginner OAuth guide article.
  • New AVIF cover images for both posts.
  • Updated image optimization cache entries for the new covers.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
src/routes/blog/post/oauth-server-vs-oauth-client-what-is-the-difference/+page.markdoc Adds a new unlisted blog post with valid post frontmatter, FAQ metadata, author, category, and cover path.
src/routes/blog/post/what-is-oauth-a-beginners-guide/+page.markdoc Adds a new unlisted blog post with valid post frontmatter, FAQ metadata, author, category, cover path, and supported code fence language.
.optimize-cache.json Adds optimization cache entries for the two new blog cover images using the repository's existing source-path cache convention.
static/images/blog/oauth-server-vs-oauth-client-what-is-the-difference/cover.avif Adds the cover asset referenced by the new OAuth server versus client post.
static/images/blog/what-is-oauth-a-beginners-guide/cover.avif Adds the cover asset referenced by the new beginner OAuth guide post.

Reviews (1): Last reviewed commit: "latest seo blogs" | Re-trigger Greptile

- question: What does an OAuth server do?
answer: An OAuth server verifies the user’s identity, displays the consent screen, processes authorization requests, and issues access and refresh tokens. It may also validate, revoke, and rotate tokens.
---
"OAuth server" and "OAuth client" get used interchangeably in a lot of tutorials, and that is where the confusion starts. They are not two names for the same thing. They are two different roles on opposite ends of the same authorization flow, and mixing them up leads to real bugs: tokens stored in the wrong place, secrets leaked to the browser, or a login flow that never completes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if this is a good fundamental reason for this blog to matter


## Public clients

A **public client** cannot keep a secret. Single-page apps, mobile apps, and desktop apps fall into this category, because any secret shipped in their code can be extracted. Public clients rely on the [PKCE extension](https://oauth.net/2/pkce/) (Proof Key for Code Exchange) instead of a client secret to protect the token exchange.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PKCE is not mandatory unless OAuth 2.1 is followed

Comment on lines +131 to +146
Here is what an OAuth2 login looks like with the Appwrite web SDK:

```client-web
import { Client, Account, OAuthProvider } from "appwrite";

const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1')
.setProject('<PROJECT_ID>');

const account = new Account(client);

account.createOAuth2Session({
provider: OAuthProvider.Google,
success: 'https://example.com/success',
failure: 'https://example.com/failed'
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should link both the createOAuth2Session and createOAuth2Token flows

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this intentionally off-centre?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants